package it.unisa.unibox.facade;

import it.unisa.unibox.Storage.DBSupportoValidazione;
import it.unisa.unibox.beans.Prodotto;
import it.unisa.unibox.commons.DBConstants;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 * 
 * @author raffaele
 * 
 */
public class FacadeValidazione implements IFacadeValidazione {

	/**
	 * Visualizza i prodotti completi per un dato dipartimento
	 * @param idDip
	 * @return la lista di prodotti
	 */
	@Override
	public ArrayList<Prodotto> visualizzaProdottiCompleti(int idDip) {
		try {
			return DBSupportoValidazione.getInstance().getProdottiCompleti(idDip);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}

    /**
     * Accetta un prodotto
     * @param idProdotto
     * @return true se l'operazione va a buon fine, false altrimenti
     */
	@Override
	public boolean accettaProdotto(int idProdotto) {
		try {
			return DBSupportoValidazione.getInstance().setStatoValidazione(
					idProdotto, DBConstants.PRODOTTO_STATO_ACCETTATO, "");
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
			return false;
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
	}

	/**
	 * Visualizza i prodotti completi per una data area scientifica
	 * @param idArea
	 * @return la lista di prodotti
	 */
	@Override
	public ArrayList<Prodotto> visualizzaProdottiAccettati(int idArea) {
		try {
			return DBSupportoValidazione.getInstance().getProdottiAccettati(idArea);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}

    /**
     * Valida un prodotto
     * @param idProdotto
     * @return true se l'operazione va a buon fine, false altrimenti
     */
	@Override
	public boolean validaProdotto(int idProdotto) {
		try {
			return DBSupportoValidazione.getInstance().setStatoValidazione(
					idProdotto, DBConstants.PRODOTTO_STATO_VALIDATO, "");
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
			return false;
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
	}

    /**
     * Rifiuta un prodotto
     * @param idProdotto
     * @return true se l'operazione va a buon fine, false altrimenti
     */
	@Override
	public boolean rifiutaProdotto(int idProdotto, String note) {
		try {
			return DBSupportoValidazione.getInstance().setStatoValidazione(
					idProdotto, DBConstants.PRODOTTO_STATO_RIFIUTATO, note);
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
			return false;
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
	}
}
